1. Field of the Invention
This invention is generally directed to data processing systems including host processors and data stores formed at one or more disk array storage devices. More specifically this invention is directed to a method and apparatus for effecting an on-line, transparent reconfiguration of data on a data store, particularly a data store with striped files or logical devices.
2. Description of Related Art
Data processing systems include a processor to execute application programs for manipulating data located in a data store. In large applications the data processor comprises multiple central processors and the data store comprises one or more disk array storage devices to provide a large storage capacity.
A disk array storage device typically includes a plurality of physical disk drives that store data organized into one or more logical volumes or devices, hereinafter “logical devices”. In these systems a host issues commands addressing a logical device in the disk array storage device. A host adapter converts the logical device address from a host into an address that specifies a location of a data block on a physical disk drive. In disk array storage devices available from the assignee of this invention the logical device address converts into a cylinder and read/write head address that, in turn, converts into a specific location on a physical disk drive according to the structure of that physical disk drive.
Different logical devices may be stored with different structures. For example, certain RAID storage schemes and data striping structures distribute data in a single logical device over multiple physical disk drives with the objective of achieving redundancy, load balancing, recovery and other goals. With respect to striping, many host requests to a non-striped logical device can produce maximum activity around a localized set of logical device addresses that tend to be concentrated on a single physical disk drive. Other physical disk drives that store other logical devices can remain relatively inactive. This uneven loading can adversely effect the operating characteristics of the disk array storage device. Striping can provide load balancing when such conditions exits. A striped logical device divides the data into a number of successive data blocks of contiguous locations on a plurality of physical disk drives. When the logical device is characterized as having tracks defined by logical cylinders and read/write heads, the data can be considered as residing on multi-track logical cylinders. A logical cylinder subset can be considered to have the capacity of a small number of cylinders in a particular physical disk drive. Data is distributed over successive physical disk drives so it is likely that multiple physical disk drives will respond to host requests and thereby balance loading.
In other applications it is possible for the storage requirement for a single logical device to exceed the capacity of a single physical disk drive. “Meta devices” provide an alternate data structure that uses multiple physical disk drives to store a single logical device. In “concatenated” meta devices, the data fills each physical disk drive in sequence. In this scheme a first logical address is located on a first physical disk drive, that is a “head element”. Additional physical disk drives are chained from the head element to store data in additional locations. The last physical disk drive in the chain is a “tail element”; any intermediate physical disk drives are “meta elements.”
Expansion of such a concatenated meta device merely requires blocking access to the logical device and updating a configuration file for that logical device. More specifically, the reconfiguration results in chaining another physical disk drive to the tail element, designating the prior tail element as a meta element and designating the new physical disk drive as the tail element. This reconfiguration requires no data transfers. As soon as the configuration file is updated, the host is enabled to access the reconfigured or augmented logical device.
Some meta devices are structured with striping. For a given size meta device, the stripes may be applied to the same physical devices that would store the meta device in a concatenated configuration. In other situations the stripes may be sized so that they are distributed across a greater multiple of physical disk drives thereby to occupy only portions of any one physical disk drive, although any one physical disk drive generally stores multiple stripes within a portion allocated to the meta device.
The reconfiguration of any striped logical device for the purpose of expansion or of changing stripe size or both is more complicated than the a reconfiguration of a non-striped logical device primarily because most of the data in such a striped logical device must be relocated from one physical disk drive to another. For example, if each physical disk drive contains multiple stripes in a single logical device and a physical disk drive is added to expand the logical device capacity, it will be desirable to move the data in a second stripe on a first physical disk drive to the first stripe on the new physical disk drive. Corresponding data shifts from each successive stripe location to other stripe locations also will occur.
One approach to shifting such data could involve taking the entire logical device out of service to reconfigure the data through a sequence of copy operations. In many situations, however, taking a logical device out of service for a considerable time period is just not acceptable. Alternatively if sufficient physical disk drives are available, all the existing data might be copied to a buffer for reconfiguration while the host continues to work with the existing data. The reconfiguration could then occur in parallel to continue interaction between the host and the existing data until the reconfiguration was complete. Then the reconfigured data could be substituted for the existing data or could be copied to replace the existing data and then reattached to the host. However, this approach requires some mechanism to track any changes a host application makes to the existing data during the reconfiguration and could require the data to be taken off-line for a considerable period of time. Moreover such a process can require significant processor resources that could adversely effect system performance even further. What is needed is a method and apparatus for enabling the reconfiguration of data concurrently with and transparently to host operations with the data being reconfigured.